package _99练习;

import java.util.LinkedList;
import java.util.Queue;

// ---------------------------------------------------------
// Queue 练习
// ---------------------------------------------------------

// 7 编写一个医院、银行叫号系统
// 取号()
// 叫号()

// 需要有一个队列保存排队信息
// 需要有个变量保存当前最大号码是多少

// 编写测试代码进行测试:
// 编写一个死循环，循环随机调用取号或者叫号方法，等待500ms
// 显示类似如下信息
// 顾客取号,当前排队编号1，您前面还有0位顾客在等待
// 顾客取号,当前排队编号2，您前面还有1位顾客在等待
// 顾客取号,当前排队编号3，您前面还有2位顾客在等待
// 窗口叫号,请编号为1的顾客到窗口.
// 窗口叫号,请编号为2的顾客到窗口.
// 顾客取号,当前排队编号4，您前面还有1位顾客在等待
// 顾客取号,当前排队编号5，您前面还有2位顾客在等待
// 窗口叫号,请编号为3的顾客到窗口.
// 窗口叫号,请编号为4的顾客到窗口.
// 窗口叫号,请编号为5的顾客到窗口.
// 窗口叫号.当前没有顾客在等待
// 窗口叫号.当前没有顾客在等待
// 顾客取号,当前排队编号6，您前面还有0位顾客在等待
// ...

// BankSystem b = new BankSystem();
// b.run();

public class HospitalSystem {
	static int num = 1;
	Queue<String> q = new LinkedList<>();

	// 顾客取号,当前排队编号1，您前面还有0位顾客在等待
	// 顾客取号,当前排队编号2，您前面还有1位顾客在等待
	// 顾客取号,当前排队编号3，您前面还有2位顾客在等待
	public void order() {
		q.offer("" + num);
		System.out.println("顾客取号，当前排队编号" + num + "您前面还有" + (q.size() - 1) + "位顾客在等待");
		num++;
	}

	// 窗口叫号,请编号为1的顾客到窗口.
	// 窗口叫号,请编号为2的顾客到窗口.
	public void decline() {

		if (q.element() == null) {
			System.out.println("窗口叫号.当前没有顾客在等待");

		} else {
			System.out.println("窗口叫号，请编号为" + q.element() + "的顾客到窗口");
		}
		q.poll();
	}

}
